feat(gate): pin reconverge 0.3.0, and prove the gate is unchanged - #11
Merged
Conversation
Same settings, written compact where termlens and mossaic write them formatted. Functionally identical and textually different, which is exactly the drift the ecosystem repo's sync tool exists to catch — and it caught this one on its first dry run, before anybody had to notice by eye. Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
The gate ran an analyzer two minor versions old. reconverge has been at 0.3.0 since 22 August; launchbound pinned 0.1.11 in four places — the corpus workflow, the Action default, and the two documents that name it. This was deferred rather than forgotten, because a newer analyzer can change what the gate refuses, and that is a change in product behaviour rather than a dependency bump. So it is measured rather than assumed. The corpus was run under both versions on the same toolchain and compared: histogram 12 clean 0 caveats 0 refused matmul-tiled 18 clean 0 caveats 0 refused reduce-flip 3 clean 0 caveats 8 refused reduce-stable 11 clean 0 caveats 0 refused scan-block 4 clean 0 caveats 0 refused stencil-1d 45 clean 0 caveats 0 refused The two runs are byte-identical — not merely equal in the totals, but the same candidate hashes, the same REFUSED RC001 lines, the same reasons. The eight refusals are reduce-flip above one warp, the corpus's known flip and the behaviour the gate exists to produce. The gate tests pass unchanged, including known_flip_kernel_disqualifies_above_one_warp. No toolchain change was needed: launchbound and reconverge 0.3.0 already pin the same nightly-2026-04-03, so the rule that the analyzer and the toolchain move together is satisfied without moving either. What this does not establish is general equivalence. reconverge gained multi-warp replay, bounded inlining and unmasked warp-wrapper analysis between these versions; a kernel exercising those paths could be decided differently. Six kernels are the evidence, and six kernels are what they are — which is why the measurement is written down in research-baseline.md rather than summarized as "no change". Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The gate ran an analyzer two minor versions old. reconverge has been at 0.3.0 since 22 August; launchbound pinned 0.1.11 in four places —
prune.yml, the Action'sreconverge-versiondefault,docs/LIMITATIONS.md, anddocs/research-baseline.md.This was deferred rather than forgotten, because a newer analyzer can change what the gate refuses — a change in product behaviour, not a dependency bump. So it is measured rather than assumed.
The measurement
The corpus was run under both analyzer versions, on the same toolchain, and compared:
The two runs are byte-identical — not merely equal in the totals, but the same candidate hashes, the same
REFUSED RC001lines, the same reasons. The eight refusals arereduce-flipabove one warp: the corpus's known flip, and the behaviour the gate exists to produce.Gate tests pass unchanged under 0.3.0, including
known_flip_kernel_disqualifies_above_one_warpandknown_stable_kernel_disqualifies_nothing.No toolchain move was needed
The rule is that the analyzer and the toolchain move together, because a rustc-driver tool must be built by the rustc it wraps. It turns out launchbound and reconverge 0.3.0 already pin the same
nightly-2026-04-03— so the rule is satisfied without moving either. That is what made this a one-variable change and worth doing now.What this does not establish
General equivalence. reconverge gained multi-warp replay, bounded inlining so a barrier behind a helper is witnessed, and unmasked warp-wrapper analysis between these versions — a kernel exercising those paths could well be decided differently. Six kernels are the evidence, and six kernels are what they are.
That caveat is written into
docs/research-baseline.mdbeside the numbers rather than summarized away as "no change", anddocs/LIMITATIONS.mdnow describes the limits of the analyzer the gate actually runs, with the date it was re-checked.Verified
cargo test --workspace: 41 pass--ignored): 3 passVersion bumped to 1.2.0. Tracked in the ecosystem repo as the one open drift item; this closes it.